home *** CD-ROM | disk | FTP | other *** search
- ; This sample gets two numbers
- ; from the user, calculates the
- ; sum of these numbers,
- ; and prints it out.
-
- #make_COM#
-
- include 'emu8086.inc'
-
- ORG 100h
-
- ; skip variable declaration:
- JMP START
-
- ; declaration of variable:
- num DW ?
-
- START:
-
- ; get first number:
- CALL PTHIS
- DB 13, 10, 'Calculation Range: [-32768..32767]', 13, 10
- DB 13, 10, 'Enter first number: ', 0
-
- CALL scan_num
-
- ; keep first number:
- MOV num, CX
-
- ; get second number:
- CALL PTHIS
- msg2 DB 13, 10, 'Enter second number: ', 0
-
- CALL scan_num
-
-
- ; add numbers:
- ADD num, CX
- JO overflow
-
-
- ; print the result:
- CALL PTHIS
- DB 13, 10, 'The sum is: ', 0
-
- MOV AX, num
- CALL print_num
-
- JMP exit
-
- ; process overlow error:
- overflow:
-
- PRINTN 'We have overflow!'
-
-
- exit:
-
- RET
-
- ;=================================
- ; here we define the functions
- ; from emu8086.inc
-
- ; SCAN_NUM reads a
- ; number from the user and stores
- ; it in CX register.
-
- DEFINE_SCAN_NUM
-
- ; PRINT_NUM prints a signed
- ; number in AX.
- ; PRINT_NUM_UNS prints an unsigned
- ; number in AX (required by
- ; PRINT_NUM):
-
- DEFINE_PRINT_NUM
- DEFINE_PRINT_NUM_UNS
-
- ; PTHIS prints NULL terminated
- ; string defined just after
- ; the CALL PTHIS instruction:
- DEFINE_PTHIS
-
- ;=================================
- END
-